#!/bin/bash
#add By Respate(@Lap 2019-1-18)
MK_INFO=" ^_^ this is shell for ESP devlop make,fusing....... \n\
 --By Respate(2019-1-18) \n\
 QQ:2085827949"

#SDK根路径
IDF_PATH=~/mcu-devlope/esp/8266-RTOS-SDK/esp8266-RTOS-SDK-3.1


#SDK交叉编译链路径
SDK_CROSS=/root/mcu-devlope/esp/gcc-esp/xtensa-lx106-elf-3.0-after/bin
PAHT=`echo $PATH`	#得到当前环境变量

PROJECT_DIR=${IDF_PATH}/project							#当前工程工作目录
FUSINGTABLE=${PROJECT_DIR}/fusing_table.txt				#固件烧录地址表
BIN_PATH=${PROJECT_DIR}/build							#指定固件（bin）生成路径
BIN_OUT_PATH=${IDF_PATH}/../0.0build-bin				#固件输出路径


#安装依赖包
#apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future


#######################################################################################
# 导出环境变量
#######################################################################################
function expPath()
{
	export PATH="${PAHT}:${SDK_CROSS}"			#导出交叉编译链路径	
	export IDF_PATH=${IDF_PATH}					#导出SDK根路径
	export PROJECT_DIR=${PROJECT_DIR}			#当前工程工作目录
	export FUSINGTABLE=${FUSINGTABLE}			#固件烧录地址表
	export BIN_PATH=${BIN_PATH}					#指定固件（bin）生成路径
	export LD_LIBRARY_PATH=/usr/local/lib
	return 0;
}

#######################################################################################
# 编译工程
#######################################################################################
function buid()
{
	echo -e "\nbuidle project now ing ........ \n"
	#echo $PATH
	#echo `xtensa-lx106-elf-gcc -v`
	cd ${PROJECT_DIR}

	rm -f  ${FUSINGTABLE}
	
	#执行编译命令
	make -j8

	if [ -f "$FUSINGTABLE" ]; then
		cat  ${FUSINGTABLE}
		
		#拷贝bin文件到输出路径
		rm -f ${BIN_OUT_PATH}/* > /dev/null
		cp -f ${BIN_PATH}/bootloader/bootloader.bin ${BIN_OUT_PATH} > /dev/null
		cp -f ${BIN_PATH}/*.bin ${BIN_OUT_PATH}         > /dev/null
		cp -f ${FUSINGTABLE} ${BIN_OUT_PATH}			 > /dev/null
	
	fi

	
	
	cd ${IDF_PATH}/
	return 0;
}


#######################################################################################
# 配置工程
#######################################################################################
function men()
{
	echo -e "\nConfig project now ing ........ \n"
	
	cd ${PROJECT_DIR}
	make menuconfig 	
	cd ${IDF_PATH}/
	
	return 0;
}

#######################################################################################
# 烧录bin到ESP8266
#######################################################################################

function fusing()
{
	echo -e "\nfusing bin to ESP Flash now ing ........ \n"
	
	cd ${PROJECT_DIR}
	chmod 777 /dev/ttyUSB0
	#esptool.py --port /dev/ttyUSB0  --baud 921600 write_flash --flash_size=detect 0 build/bootloader/bootloader.bin
	#esptool.py --port ttyUSB0 write_flash_status --non-volatile 0
#	make erase_flash	#擦除FLASH
	make flash
	cd ${IDF_PATH}/
	return 0;
}

#######################################################################################
# 监看串口0
#######################################################################################

function mon()
{
	echo -e "\nfusing bin to ESP Flash now ing ........ \n"
	
	cd ${PROJECT_DIR}
	make monitor
	cd ${IDF_PATH}/
	return 0;
}

#######################################################################################
# 生成下载地址
#######################################################################################
function cle()
{
	#
	echo " "
}


#######################################################################################
# 设置串口的属性
#######################################################################################

function serial()
{
	echo -e "\n cat ttyUSB0 ........ \n"

	BUND=115200	
	stty -F /dev/ttyS0 ispeed ${BUND} ospeed ${BUND} cs8	#该命令将串口1（/dev/ttyS0）设置成115200波特率，8位数据模式。
	cat /dev/ttyS0										#查看串口打印信息
	return 0;
}



#######################################################################################
# 帮助文档
#######################################################################################
function helping
{
	echo "./mk        --For update file and buid project!"
	echo "./mk fusing --For fusing bin to ESP Flash!"
	echo "./mk men    --For menuconfig project!"
	echo "./mk mon    --For monitor serial ttyS0!"
	echo "./mk all    --For build fusing and monitor!"
	
	echo "./mk help   --For get helping!"
}


#######################################################################################
# 脚本执行的起始位置
#:判断是否传参，如果没有就编译uboot
#
#######################################################################################


expPath ;				#导出环境环境
clear					#清屏
echo -e ${MK_INFO}		#打印脚本信息


#执行脚本
if [ -z $1 ]; then
	buid ;				# 编译工程
	
elif [ $1 = "men" ]; then	
	men ;				# 配置工程
	
elif [ $1 = "fusing" ]; then	
	fusing ;			# 烧录bin文件
	
elif [ $1 = "mon" ]; then
	mon ;				#打开控制台
						
elif [ $1 = "all" ]; then	#一键编译烧录与监看
	buid ;			
	fusing ;
	mon ;

elif [ $1 = "ser" ]; then	#一键编译烧录与监看
	serial ;

elif [ $1 = "clean" ]; then	#一键编译烧录与监看
	cle ;
	
else 
	echo "mk shell helping ........"
	helping ;			#查看帮助
fi

cd - >> /dev/null		#回到当前目录


